﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BIZMA._controls;
using BIZModel;
using BL.BIZControls;

namespace BIZMA._controls.Demo
{
    public partial class Edit_BusinessType : BIZEditControl, IBIZControlDefaultMethods
    {
        #region default
        public void DefaultListLoad()
        {
            throw new NotImplementedException();
        }

        public void DefaultListLoad(Guid Id, string loadByType)
        {
            throw new NotImplementedException();
        }

        public void DefaultEditNew()
        {
            NewBusinessType();
        }

        public void DefaultEditNew(Guid Id, string editByType)
        {
            throw new NotImplementedException();
        }

        public void DefaultEditLoad(Guid Id)
        {
            LoadBusinessType(Id);
        }
        #endregion

        #region This Dialog
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack || !InitLoaded)
            {
                InitLoaded = true;

                //Gör sådant som man gör på pageload här typ fyll "statisk" dropdown med värden mm 

            }
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            //här gör man alla init inställningar typ lägga till eventhandlers och annat som styr sidan

            if (ContainerControl != null)
            {
                ContainerControl.Title = "Företagstyp";
                ContainerControl.ShowButtons(true, true, true,true);
                ContainerControl.ButtonsClick += new ButtonsHandler(ContainerControl_ButtonsClick);

                if (ModalContainerControl != null)
                {
                    ModalContainerControl.Width = 500;
                    ModalContainerControl.Height = 455;
                }

                valName.ValidationGroup = ContainerControl.ValGroupSave;

            }

         }

        void ContainerControl_ButtonsClick(object sender, ActionType actionType)
        {
            if (actionType == ActionType.Save || actionType == ActionType.SaveClose)
            {
                Save();
            }
            else if (actionType == ActionType.Delete)
            {
                Delete();
            }
        }
        
        #endregion

        #region methods this dialog
        /// <summary>
        /// Den här funktionen aktiverar inativerar knappar som kräver att formuläret har sparats/laddats och det finns data som 
        /// knappen kan använda ex Man kan inte öppna en planering för ett projekt om inte projektet har skapats/laddats först
        /// </summary>
        private void ToggleButtons()
        {

        }

        /// <summary>
        /// Metod för att tömma sida och aktivera läge för att skapa nytt
        /// </summary>
        public void NewBusinessType()
        {
            LoadBusinessType(Guid.Empty);
        }

        /// <summary>
        /// ladda formuläret med existerande data för att ex uppdatera
        /// </summary>
        /// <param name="someVal"></param>
        public void LoadBusinessType(Guid businessTypeId)
        {
            InitLoaded = true;
            CurrentId = businessTypeId;


            if (businessTypeId != Guid.Empty)
            {
                BIZMAEntities ent = BaseBL.GetEnt();
                BIZModel.DemoBusinessType BT = ent.DemoBusinessTypes.FirstOrDefault(q => q.BusinessTypeId == businessTypeId);

                txtName.Text = BT.Name;
            }
            else
            {
                txtName.Text = "";
            }

            ToggleButtons();
        }


        private void Save()
        {
            //SAVE
            BIZMAEntities ent = BaseBL.GetEnt();
            BIZModel.DemoBusinessType BT = null;

            //ent.SaveChanges();
            if (CurrentId == Guid.Empty)
            {
                CurrentId = Guid.NewGuid();
                BT = BIZModel.DemoBusinessType.CreateDemoBusinessType(CurrentId, txtName.Text);
                ent.AddToDemoBusinessTypes(BT);
            }
            else
            {
                BT = ent.DemoBusinessTypes.FirstOrDefault(q => q.BusinessTypeId == CurrentId);
                BT.Name = txtName.Text;
            }


            ent.SaveChanges();

            //Ändra aktivering av knappar efter sparning
            LoadBusinessType(CurrentId);
        }

        private void Delete()
        {
            BIZMAEntities ent = BaseBL.GetEnt();
            BIZModel.DemoBusinessType BT = ent.DemoBusinessTypes.FirstOrDefault(q => q.BusinessTypeId == CurrentId);
            ent.DeleteObject(BT);
            ent.SaveChanges();
        }
        #endregion





    }
}